home *** CD-ROM | disk | FTP | other *** search
- 19-May-87 06:32:55-EDT,2344;000000000001
- Return-Path: <SYSKERMIT%vax1.central.lancaster.ac.uk@Cs.Ucl.AC.UK>
- Received: from Cs.Ucl.AC.UK (TUNNEL.CS.UCL.AC.UK) by CU20B.COLUMBIA.EDU with TCP; Tue 19 May 87 06:32:29-EDT
- Received: from vax1.central.lancaster.ac.uk by mv1.Cs.Ucl.AC.UK
- via Janet with NIFTP id aa00514; 19 May 87 10:50 BST
- Date: 19-MAY-1987 10:47:53
- From: SYSKERMIT%vax1.central.lancaster.ac.uk@Cs.Ucl.AC.UK
- To: "SY.FDC" <@Cs.Ucl.AC.UK:SY.FDC@cu20b.columbia.edu>
- Subject: File BBCHEX.BAS
-
- 100 REM ** Binary to Intel Hex converter **
- 120 REM ** Version 2 November 1985 **
- 140
- 160 CLOSE#0
- 180
- 200 DIM data 31,block 16,binfile 32
- 220
- 240 INPUT "Name of input binary file? " $binfile
- 260 INPUT "Name of output hex file? " out$
- 280 in% = OPENIN($binfile)
- 300 IF in%=0 THEN PRINT"Input file does not exist":END
- 320 out%= OPENOUT(out$)
- 340
- 360 address% = FNloadaddress
- 380
- 400 REPEAT
- 420 PRINT"At address ";~address%
- 440 PROCwriterecord
- 460 UNTIL EOF#in%
- 480
- 500 REM write EOF record
- 520
- 540 BPUT#out%,ASC(":")
- 560 FOR I% = 1 TO 3
- 580 PROCputhex(0)
- 600 NEXT
- 620 PROCputhex(1)
- 640 PROCputhex(&FF)
- 660 BPUT#out%,&0D
- 680
- 700 CLOSE#0
- 720
- 740 END
- 760
- 780 DEF PROCputhex(byte%)
- 800 byte% = byte% AND &FF
- 820 checksum% = (checksum% + byte%) AND &FF
- 840 PROCputnibble(byte% DIV 16)
- 860 PROCputnibble(byte%)
- 880 ENDPROC
- 900
- 920 DEF PROCputnibble(nibble%)
- 940 nibble% = nibble% AND &0F
- 960 IF nibble%<10 THEN BPUT#out%,nibble%+ASC("0") ELSE BPUT#out%,nibble%+ASC("A")-10
- 980 ENDPROC
- 1000
- 1020 DEF PROCwriterecord
- 1040 LOCAL I%,J%
- 1060 checksum% = 0
- 1080 BPUT#out%,ASC(":")
- 1100 I% = 0
- 1120 REPEAT
- 1140 data?I% = BGET#in%
- 1160 I% = I% + 1
- 1180 UNTIL I%=32 OR EOF#in%
- 1200 PROCputhex(I%)
- 1220 PROCputhex(address% DIV 256)
- 1240 PROCputhex(address%)
- 1260 PROCputhex(0)
- 1280 FOR J% = 0 TO I%-1
- 1300 PROCputhex(data?J%)
- 1320 NEXT
- 1340 recsum% = -checksum%
- 1360 PROCputhex(recsum%)
- 1380 BPUT#out%,&0D
- 1400 address% = address% + I%
- 1420 ENDPROC
- 1440
- 1460 DEF FNloadaddress
- 1480 block?0 = binfile AND &FF
- 1500 block?1 = binfile DIV 256
- 1520 A%=5:X%=block AND &FF:Y%=block DIV 256
- 1540 CALL &FFDD
- 1560 =block?2+block?3*256
-